<?php
/**
 * Controle de PapelAtividade
 * @filesource  24/12/2011
 * @author      Estrada Virtual <http://estradavirtual.com.br>
 * @copyright   Copyright <2011> Estrada Virtual
 * @package     <<application>>
 * @subpackage  <<application>>.application.controllers
 * @version     $Id$
 */
class PapelAtividadeController extends Ev_Controller_Crud
{
    /**
     * Carrega dados que não são do model relacionado com o controller
     * @return void
     */
    protected function _carregarExtrasFormulario()
    {
        parent::_carregarExtrasFormulario();

        if (!$this->_hasParam('id')) {
            $id_papel = $this->_getParam('id_papel');
            $this->view->row->fk_papel = $id_papel;
        }
    }

    public function relacionarAction()
    {
        $this->_helper->layout()->disableLayout();
        $id_papel = $this->_getParam('id_papel');
        if ($this->getRequest()->isPost()) {
            $aAtividades = (array) $this->_getParam('aAtividades');
            $model = new Model_PapelAtividade();
            //$model->delete('fk_cliente = ' . $fk_cliente);
            foreach ($aAtividades as $idAtividade) {
                $dados['fk_atividade'] = $idAtividade;
                $dados['fk_papel']     = $id_papel;
                $model->createRow($dados)->save();
            }
            $this->_addMessage('Atividades relacionadas', 'corporativo/papel/formulario/id_papel/' . $id_papel);
        }


        $modelPapel = new Model_Papel();
        $rowPapel = $modelPapel->find($id_papel)->current();
        $fk_cliente = $rowPapel->fk_cliente;

        $rowSetAtividadesMarcadas = $rowPapel->findModel_OrgAtividadeViaModel_PapelAtividade();
        $aMarcadas = array();
        foreach ($rowSetAtividadesMarcadas as $rowMarcada) {
            $aMarcadas[$rowMarcada->id_atividade] = true;
        }

        $modeAtividade = new Model_OrgAtividade();
        $rowSetAtividades = $modeAtividade->fetchAll(array('fk_cliente = ?' => $fk_cliente));

        $aAtividades = array();
        foreach ($rowSetAtividades as $rowAtividade) {
            if (isset($aMarcadas[$rowAtividade->id_atividade])) {
                continue;
            }
            $aAtividades[$rowAtividade->id_atividade] = '[' . $rowAtividade->st_codigo . '] ' . $rowAtividade->st_nome;
        }
        $this->view->fk_papel = $id_papel;
        $this->view->aAtividades = $aAtividades;
    }

    /**
     * Chamado depois do gravar, pode ser utilizado para redirecionar o usuário para actions dependendo de valores
     * @param $id
     * @param array $aInfoExtra - Array de Informações Extra
     * @return void
     */
    protected function posGravar($id = null, $aInfoExtra = array())
    {
        $this->_redirect('corporativo/papel/formulario/id/' . $this->_getParam('fk_papel'));
    }
}
